package dao

import (
	"github.com/google/wire"
	"sieve_admin_server_userpass/app/dao/announcement"
	"sieve_admin_server_userpass/app/dao/business_price_scheme"
	"sieve_admin_server_userpass/app/dao/business_type"
	"sieve_admin_server_userpass/app/dao/country"
	"sieve_admin_server_userpass/app/dao/daily_recharge"
	"sieve_admin_server_userpass/app/dao/income"
	"sieve_admin_server_userpass/app/dao/logger"
	"sieve_admin_server_userpass/app/dao/menu"
	"sieve_admin_server_userpass/app/dao/notice"
	"sieve_admin_server_userpass/app/dao/recharge"
	"sieve_admin_server_userpass/app/dao/role"
	"sieve_admin_server_userpass/app/dao/sieve_config"
	"sieve_admin_server_userpass/app/dao/sieve_task_aggregation"
	"sieve_admin_server_userpass/app/dao/user"
	"sieve_admin_server_userpass/app/dao/user_records"
	"sieve_admin_server_userpass/app/dao/util"
	"sieve_admin_server_userpass/app/dao/warehouse"
)

// RepoSet repo injection
var RepoSet = wire.NewSet(
	util.TransSet,
	announcement.AnnouncementSet,
	daily_recharge.DailyRechargeSet,
	business_type.BusinessTypeSet,
	income.IncomeStatisticsSet,
	user.UserSet,
	user.UserAuthSet,
	logger.LoginRecordSet,
	logger.BusinessRecordSet,
	notice.NoticeSet,
	role.RoleSet,
	role.RoleMenuSet,
	country.CountrySet,
	warehouse.WarehouseSet,
	recharge.RechargeSet,
	menu.MenuSet,
	user_records.UserRecordsSet,
	sieve_task_aggregation.SieveTaskAggregationSet,
	sieve_config.SieveSourceConfigSet,
	business_price_scheme.BusinessPriceSchemeSet,
) // end

// Define repo type alias
type (
	Trans                    = util.Trans
	AnnouncementRepo         = announcement.AnnouncementRepo
	DailyRechargeRepo        = daily_recharge.DailyRechargeRepo
	UserRecordsRepo          = user_records.UserRecordsRepo
	BusinessTypeRepo         = business_type.BusinessTypeRepo
	IncomeStatisticsRepo     = income.IncomeStatisticsRepo
	UserRepo                 = user.UserRepo
	UserAuthRepo             = user.UserAuthRepo
	LoginRecordRepo          = logger.LoginRecordRepo
	BusinessRecordRepo       = logger.BusinessRecordRepo
	NoticeRepo               = notice.NoticeRepo
	RoleRepo                 = role.RoleRepo
	RoleMenuRepo             = role.RoleMenuRepo
	CountryRepo              = country.CountryRepo
	WarehouseRepo            = warehouse.WarehouseRepo
	SieveTaskAggregationRepo = sieve_task_aggregation.SieveTaskAggregationRepo
	RechargeRepo             = recharge.RechargeRepo
	MenuRepo                 = menu.MenuRepo
	SieveSourceConfigRepo    = sieve_config.SieveSourceConfigRepo
	BusinessPriceSchemeRepo  = business_price_scheme.BusinessPriceSchemeRepo
) // end
